import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.List;
import java.util.ArrayList;
/**
 * Write a description of class ViudaNegra here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class ViudaNegra extends Enemigo
{
     private int direccionx;
    private int direcciony;
     private String dibujo[];
    private int dibujo_act;
    private boolean dirizq;
    private boolean dirder;

    
      public  ViudaNegra()
    {
      dibujo=new String[23];
      dibujo[0]="bw1.gif";
      dibujo[1]="bw1.gif";
      dibujo[2]="bw1.gif";
      dibujo[3]="bw2.gif";
      dibujo[4]="bw2.gif";
      dibujo[5]="bw2.gif";
      dibujo[6]="bw3.gif";
      dibujo[7]="bw3.gif";
      dibujo[8]="bw3.gif";
      dibujo[9]="bw4.gif";
      dibujo[10]="bw4.gif";
      dibujo[11]="bw4.gif";
      dibujo[12]="bw12.gif";
      dibujo[13]="bw12.gif";
      dibujo[14]="bw13.gif";
      dibujo[15]="bw13.gif";
      dibujo[16]="bw14.gif";
      dibujo[17]="bw14.gif";//termina el caminar con golpes
      dibujo[18]="bw13.gif";
      dibujo[19]="bw14.gif";
      dibujo[20]="bw9.gif";
      dibujo[21]="bw15.gif";
      dibujo[22]="bw5.gif";//termina disparo
      
      this.dirder=true;
      this.dirizq=false;
      this.dibujo_act=0;
       
    }
      
    public void act() 
    {
       GreenfootImage imagen;
        int aleatorio=Greenfoot.getRandomNumber(600);
       this.setImage(this.dibujo[this.dibujo_act]);
        if(direccionx== 1)//checa la direccion y pone la miagen
        {
            imagen=this.getImage();
            imagen.mirrorHorizontally();
            this.setImage(imagen); 
        }
       imagen=this.getImage();
       imagen.scale(100,100);
       this.dibujo_act++;
      
       Gravedad();
       
       if(this.dibujo_act==18)
        {
            this.dibujo_act=0;
        }
        //movimiento viuda
        if(this.getY()>400 &&( (this.getX()==this.getWorld().getWidth()) || (this.getX()==0)) )
        {
             reiniciam();
        }
        
        if(this.getX()==0)
        {
          this.dirizq=true;
          this.dirder=false;
        }
        else if(this.getX()>=this.getWorld().getWidth()-10)
        {
          this.dirizq=false;
          this.dirder=true;
        }
        if(this.dirizq==true)
        {
          direccionx=0;
          move(6);
        }
        if(this.dirder==true)
        {
            direccionx=1;
            move(-6); 
        }
       
          if(aleatorio>74 && aleatorio< 104 )//disparo iron man aleatorio
       {
           
           if(this.direccionx==0)
                 {
                 Disparo ds=new Disparo(this.getX()+80,this.getY(),this.direccionx,3);
                 getWorld().addObject(ds,this.getX()+50,this.getY());
                 }
                 if(this.direccionx==1)
                 {
                 Disparo ds=new Disparo(this.getX()-80,this.getY(),this.direccionx,3);
                 getWorld().addObject(ds,this.getX()-50,this.getY());
                 }
       }
        
    }   
    
     public boolean Gravedad()
    {    
        List piso =  super.getWorld().getObjectsAt(this.getX(),  this.getY()+50, Plataforma.class);
               if(!piso.isEmpty())
        {
           return (true);
        }
        else
        {
        if (this.getY()<550)
            this.setLocation(this.getX(), this.getY()+3);
        }  
          
     
      return(true);
    }
    public void reiniciam()
    {
        int aleatorio=Greenfoot.getRandomNumber(800);
        this.setLocation(aleatorio,0);
    }
}
